<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script src="./01-MyPromise.js"></script>
  <script>
    // let p = new MyPromise((resolve, reject) => {
    //   setTimeout(function() {
    //     resolve('resolve')
    //   })
    // }, 1000)
    // let p1 = p.then(value => {
    //   console.log(value);
    //   // return 1
    //   // throw 123
    // })

    // p1.then(value => {
    //   console.log(value);
    // }, reason => {
    //   console.log(reason);
    // })

    // let p1 = new MyPromise((resolve, reject) => {
    //   setTimeout(function() {
    //     resolve('111')
    //   }, 3000)
    // })

    // let p2 = new MyPromise((resolve, reject) => {
    // setTimeout(function() {
    //   // resolve('222')
    //   throw 222
    // }, 2000)
    // throw 222
    // })

    // let p3 = new MyPromise((resolve, reject) => {
    //   setTimeout(function() {
    //     resolve('333')
    //   }, 1000)
    // })

    // MyPromise.all([p1, p2, p3]).then(value => {
    //   console.log(value);
    // }, reason => {
    //   console.log(reason);
    // })

    // MyPromise.race([p1, p2, p3]).then(value => {
    //   console.log(value);
    // }, reason => {
    //   console.log(reason);
    // })
    // let p2 = p1.then(value => {
    //   console.log(value);
    //   return MyPromise.resolve(MyPromise.resolve(2222))
    // })

    // let p3 = p2.then(value => {
    //   console.log(value);
    //   return new MyPromise((resolve, reject) => {})
    // })
    // console.log(p3);
    // p3.then(value => {
    //   console.log(value);
    // })

    // let m1 = new Promise((resolve, reject) => {
    //   resolve(111)
    // })
    // m1.then().then(value => {
    //   console.log(value);
    // })

    // let m2 = new MyPromise((resolve, reject) => {
    //   reject(6666)
    // })
    // m2.then().then(value => {
    //   console.log(value);
    // }, reason => {
    //   console.log(reason);
    // }).catch(reason => {
    //   console.log();
    // })
    let p = new MyPromise((resolve, reject) => {
      reject(123)
    })
    p.then(value => {
      console.log(value);
    })
  </script>
</body>

</html>